#!/bin/bash

echo "构建模块: $env"
#定义变量
# jar 包存放的路径
JAR_PATH="/data/shaozj/server"
#定义端口
PORT_VAL=8803
#镜像名称和端口
JAR_NAME="shaozj-server-system"


#新镜像的名称
timestamp=$(date +%Y%m%d%H%M)
NEW_IMAGE_NAME=$JAR_NAME:$timestamp

#项目的生产环境配置

#进入指定目录
cd $JAR_PATH || { echo 'Failed to change directory'; exit 1;}

echo "########## 停止所有容器 #####################"
OLD_IMAGE_TAGS=$( docker images | grep "$JAR_NAME" | awk '{print $2}' | grep -v '$timestamp' | sort | uniq)
for tag in $OLD_IMAGE_TAGS; do
  docker rmi "${JAR_NAME}:${tag}"
  echo "旧镜像 ${JAR_NAME}:${tag} 已删除"
done

#构建镜像
echo "开始构建镜像：$NEW_IMAGE_NAME"
# 构建新的镜像
docker build -t $NEW_IMAGE_NAME --build-arg ENV=$env --build-arg JARNAME=$JAR_NAME --build-arg JARPORT=$PORT_VAL .
if [ $? -ne 0 ]; then #判断上一个指令退出的状态码 0标识执行成功
  echo "构建镜像 $NEW_IMAGE_NAME 失败"
  exit 1
else
  echo "构建镜像 $NEW_IMAGE_NAME 成功"
fi

# 2.停止并删除之前运行的容器
echo '正在停止并删除之前运行的容器...'
RUNNING_CONTAINER_ID=$(docker ps | grep '$JARNAME' |awk '{print $1}')
if [ -n "$RUNNING_CONTAINER_ID" ]; then
  docker stop "$RUNNING_CONTAINER_ID"
  echo "容器 $RUNNING_CONTAINER_ID 已停止"
  docker rm "$RUNNING_CONTAINER_ID"
  echo "容器 $RUNNING_CONTAINER_ID 已删除"
fi

# 在宿主机上创建logs目录，用于容器挂载，这样查看日志可以直接在宿主机查看，比较方便
echo "创建日志目录.."
mkdir -p $JAR_PATH/logs
docker run -d --name $JAR_NAME -p $PORT_VAL --restart=always $NEW_IMAGE_NAME
if [ $? -eq 0 ]; then
  echo "新容器运行成功"
else
  echo "新容器运行失败"
  exit 1
fi



